home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Tool Chest / Development Tools & Languages / • Other Platforms / PCCTS 1.31 / testcpp / 7 / test.g < prev   
Encoding:
Text File  |  1995-03-10  |  952 b   |  59 lines  |  [TEXT/MPS ]

  1. <<
  2. class ANTLRToken : public DLGBasedToken {
  3. public:
  4.     int muck;
  5. public:
  6.     ANTLRToken(TokenType t, ANTLRChar *s) : DLGBasedToken(t)
  7.         { muck = atoi(s); }
  8.     ANTLRToken() {;}
  9.     ANTLRChar *getText() { return ""; }
  10.     void setText(ANTLRChar *s) { ; }
  11.     virtual ANTLRLightweightToken *makeToken(TokenType t, char *s, int line)
  12.         {
  13.             ANTLRToken *tk = new ANTLRToken;
  14.             tk->setType(t); tk->muck = atoi(s);
  15.             return tk;
  16.         }
  17. };
  18.  
  19. #include "DLGLexer.h"
  20.  
  21. int main()
  22. {
  23.     ANTLRToken aToken;
  24.     DLGFileInput in(stdin);
  25.     DLGLexer scan(&in,2000);
  26.     ANTLRTokenBuffer pipe(&scan);
  27.     scan.setToken(&aToken);
  28.     Expr parser(&pipe);
  29.     parser.init();
  30.  
  31.     parser.calc();
  32.     return 0;
  33. }
  34. >>
  35.  
  36. #token "[\ \t\n]+"    <<skip();>>
  37.  
  38. class Expr {
  39.  
  40. calc:    <<int r;>>
  41.         e>[r]
  42.         <<printf("result is %d\n", r);>>
  43.     ;
  44.  
  45. e > [int r]
  46.     :    <<int b;>>
  47.         e2>[$r] ( "\+" e2>[b] <<$r+=b;>> )*
  48.     ;
  49.  
  50. e2 > [int r]
  51.     :    NUMBER <<$r=$1->muck;>>
  52.         ( "\*" NUMBER <<$r*=$2->muck;>> )*
  53.     ;
  54.  
  55. }
  56.  
  57. #token NUMBER        "[0-9]+"
  58.  
  59.